# -*- coding: utf-8 -*-
# created by Alberthch - 陈航  2021/7/15 20:14
# Description:你有一个字典列表（元素为字典的列表），你想根据某个或者几个字典字段来排序这个列表
from operator import itemgetter
from pprint import pprint

# from operator import itemgetter operator.itemgetter函数获取的不是值，而是定义了一个函数，通过该函数作用到对象上才能获取值。
# from pprint import pprint  print()和pprint()都是python的打印模块，功能基本一样，唯一的区别就是pprint()模块打印出来的数据结构更加完整，每行为一个数据结构，更加方便阅读打印输出结果。


rows = [
    {'fname': 'Brian', 'lname': 'Jones', 'uid': 1003},
    {'fname': 'David', 'lname': 'Beazley', 'uid': 1002},
    {'fname': 'John', 'lname': 'Cleese', 'uid': 1001},
    {'fname': 'Big', 'lname': 'Jones', 'uid': 1004}
]

rows_by_fname = sorted(rows, key=itemgetter('fname'))
rows_by_uid = sorted(rows, key=itemgetter('uid'))
rows_by_lfname = sorted(rows, key=itemgetter('lname', 'fname'))

print("Sorted by fname:")
pprint(rows_by_fname)
print("="*20)

print("Sorted by uid:")
pprint(rows_by_uid)
print("="*20)

print("Sorted by lname,fname:")
pprint(rows_by_lfname)
print("="*20)

print("uid最小的项：")
print(min(rows,key=itemgetter("uid")))
print("="*20)

print("uid最大的项：")
print(max(rows,key=itemgetter("uid")))
